package com.zks.springbootcrud.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zks.springbootcrud.VO.DepartVO;
import com.zks.springbootcrud.entity.Depart;
import com.zks.springbootcrud.entity.Staff;
import org.apache.ibatis.annotations.*;
import org.springframework.web.bind.annotation.PathVariable;

import java.util.List;

@Mapper
public interface DepartMapper extends BaseMapper<Depart> {

    @Select("select depart.* from staff_depart,depart where staff_depart.staff_id = #{staff_id} and depart.id = staff_depart.depart_id") //存疑
    List<Depart> returnDepartment(@Param("staff_id") String id);


    //查询部门所属的员工信息
    @Select("select * from depart where depart.id = #{id}")
    @Results({

            @Result(column = "id", property = "id",id = true),//将数据库表中的列和实体类中的属性对应起来，不写最后查出的结果id没有值
            @Result(column="id",  // 主表中的列名，这个列的值要作为查询参数传给子查询
                    property="staffList",  //代表子查询的查询结果关联的实体属性,将查询到的结果存入staffList
                    javaType = List.class, //javaType： 子查询中的返回值类型
                    many = @Many(select="com.zks.springbootcrud.mapper.StaffMapper.returnDepartStaffList")

                    //@Many： 一对多、多对多使用该注解指定子查询接口方法
                    //many = @Many(select = “com.neu.mybatisplus.dao.CarDao.returnCars”) 指定子查询接口方法
                    //一句话版本：用column作为子查询的参数，将子查询返回值写入property
            )
    })
    DepartVO getDepartStaffList(@Param("id") int id);

}
